/**
  * ESPECIFICACIÓN: Función encargada de que sólo se pueda pulsar una opción de las disponibles
  * dentro de una pregunta monorespuesta (debido a que. por temas internas para almacenar las
  * respuestas, cada una de ellas tiene un 'name' diferente)
  **/
function monoresponseClicked(idAnswer,questionSelected) {
	var inputs = document.getElementsByTagName("input");
	for (p=0 ; p<inputs.length ; p++) {
		var inputActual = inputs[p];
		//comprobamos si el 'input' actual es del tipo 'radio' (que es el tipo de las
		//respuestas que pertencen a las preguntas monorespuesta
		if (inputActual.getAttribute("type") == "radio") {
			//obtenemos el valor introducido como parámetro para la varaible 'questionSelected' de 
			//esta misma función en el 'input' actual
			var attributeOnclick = inputActual.getAttribute("onclick");
			var parametroQuestionSelected = attributeOnclick.substring(attributeOnclick.indexOf(",")+1, attributeOnclick.indexOf(",")+2);
			//comprobamos gracias al valor obtenido anteriormente si la respuesta actual 
			//pertenece a la seleccionada
			if(questionSelected == parametroQuestionSelected) {
				//obtenemos el valor de la respuesta actual también gracias al valor del valor parámetro
				//que se envia a esta función en el atributo onlick
				var parametroIdAnswer = attributeOnclick.substring(attributeOnclick.indexOf("(")+1, attributeOnclick.indexOf(","));
				//si la respuesta actual está seleccionda y no es la pulsada, la desmarcamos
				if ((inputActual.checked) && ("'"+idAnswer+"'" != parametroIdAnswer)) {
					inputActual.checked = false;
				}
			}
		}
	}
}

/**
 * ESPECIFICACIÓN: Función que comprueba que todas las preguntas de la encuesta estén respondidas antes
 * de que ésta sea enviada. En caso de que no hayan sido respondidas todas las preguntas, muestra el
 * mensaje de error correspondiente y cancela el envío del formulario
 **/
function checkSurvey() {
	var inputs = document.getElementById("main").getElementsByTagName("input");
	var ok = true;

	for (p=0 ; p<inputs.length ; p++) {
		var inputActual = inputs[p];
		//comprobamos si el 'input' actual es del tipo 'text' (que es el tipo de las
		//respuestas que pertencen a las preguntas abiertas)
		if (inputActual.getAttribute("type") == "text") {
			//si el campo está vacío, devolvemos error
			if (inputActual.value.length == 0) {
				ok = false;
				break;
			}

		//comprobamos si el 'input' actual es del tipo 'radio' (que es el tipo de las
		//respuestas que pertencen a las preguntas monorespuesta)
		} else if (inputActual.getAttribute("type") == "radio") {
			//obtenemos el número de pregunta monorespuesta dentro de la encuesta a partir de uno de los parámetros
			//del atributo onclick
			var attributeOnclick = inputActual.getAttribute("onclick");
			var preguntaActualRecorrida =  attributeOnclick.substring(attributeOnclick.indexOf(",")+1, attributeOnclick.indexOf(",")+2);

			var checked = false;
			while (p < inputs.length) {
				inputActual = inputs[p];
				//obtenemos el número de pregunta monorespuesta dentro de la encuesta a partir de uno de los parámetros
				//del atributo onclick
				attributeOnclick = inputActual.getAttribute("onclick");
				var preguntaActual =  attributeOnclick.substring(attributeOnclick.indexOf(",")+1, attributeOnclick.indexOf(",")+2);

				if (preguntaActual != preguntaActualRecorrida) {
					break;
				}
				if (inputActual.checked) {
					checked = true;
				}
				p++;
			}
			if (preguntaActual != preguntaActualRecorrida) {
				p--;
			}
			if (checked) {
				checked = false;
			} else {
				ok = false;
				break;
			}

		//comprobamos si el 'input' actual es del tipo 'checbkox' (que es el tipo de las
		//respuestas que pertencen a las preguntas multirespuesta)
		} else if (inputActual.getAttribute("type") == "checkbox") {
			//obtenemos el número de pregunta monorespuesta dentro de la encuesta a partir de uno de los parámetros
				//del atributo class (ya que le hemos asignado una false clase que nos sirve simplemente para esta función)
			var attributeClass = inputActual.getAttribute("class");
			var preguntaActualRecorrida = attributeClass.substring(attributeClass.indexOf(".")+1);

			var checked = false;
			while (p < inputs.length) {
				inputActual = inputs[p];
				//obtenemos el número de pregunta monorespuesta dentro de la encuesta a partir de uno de los parámetros
				//del atributo class (ya que le hemos asignado una false clase que nos sirve simplemente para esta función)
				attributeClass = inputActual.getAttribute("class");
				var preguntaActual = attributeClass.substring(attributeClass.indexOf(".")+1);

				if (preguntaActual != preguntaActualRecorrida) {
					break;
				}
				if (inputActual.checked) {
					checked = true;
				}
				p++;
			}
			if (preguntaActual != preguntaActualRecorrida) {
				p--;
			}
			if (checked) {
				checked = false;
			} else {
				ok = false;
				break;
			}
		}
	}

	var divWarning = document.getElementById("warning");
	if (ok) {
		divWarning.setAttribute("style", "display: none");
		return true;
	} else {
		divWarning.setAttribute("style", "display: inline");
		divWarning.innerHTML = "Por favor, responde a todas las preguntas antes de enviar la encuesta.";
		return false;
	}
}
